import xlrd
import os
import json
import yaml
# #打开Excel
# #方式一:绝对路径打开(不推荐)
# #readbook = xlrd.open_workbook(r"E:\pycharm\zidonghua\freamwork_vip21\testData\data.xls")
# #方式二:相对路径打开(推荐)
# path_name = os.path.dirname(os.path.dirname(__file__)) + r"/testData/data.xls"
# print(path_name)
# readbook = xlrd.open_workbook(path_name)
# #获取指定的sheet页
# sheet = readbook.sheet_by_index(0)
# sheetnames = readbook.sheet_names()
# print(sheetnames)
# #获取做大行数/最大列数
# max_row = sheet.nrows
# max_col = sheet.ncols
# print(f"最大行{max_row},最大列{max_col}")
# #查看某个单元格的值
# cell_value = sheet.cell_value(0,0)
# print(cell_value)
# #查看某行/列的值
# row_value = sheet.row_values(0)
# col_value = sheet.col_values(0)
# print(f"第一行的值:{row_value}")
# print(f"第一列的值:{col_value}")


# list1 = ["name","age","sex"]
# list2 = ["Tom",18,"男"]
# dict1 = {list1[i]:list2[i] for i in range(len(list1))}
# print(dict1)

#定义一个类
class ReadData:
    #1.创建__init__初始化方法
    def __init__(self):
        #1.1获取文件路径
        self.path_name = os.path.dirname(os.path.dirname(__file__)) + r"/testData/data1.xls"
        #1.2打开Excel文件
        self.readbook = xlrd.open_workbook(self.path_name)
        #1.3获取指定sheet页
        self.sheet = self.readbook.sheet_by_index(0)
        #1.4获取最大行/最大列
        self.max_row = self.sheet.nrows
        self.max_col = self.sheet.ncols
        #1.5预设一个返回列表,初始为空
        self.res_list = []
        #1.6获取第一行的值作为结果的key
        self.first_row = self.sheet.row_values(0)
    #2.定义一个组装数据的对外方法:read_excel
    def read_excel(self):
        #循环取出每行数据作为一条测试用例(第一行排除)
        for i in range(1,self.max_row):
            #2.1获取每一行的数据
            row_value = self.sheet.row_values(i)
            #2.2组装成一个字典
            dict1 = dict(zip(self.first_row,row_value))
            #2.3将组装好的字典添加到结果列表
            self.res_list.append(dict1)

        #2.4返回结果列表
        return self.res_list
    #读取json,组装数据
    def read_json(self):
        #获取测试数据路径
        json_path = os.path.dirname(os.path.dirname(__file__)) + r"/testData/data.json"
        #打开json文件
        f = open(json_path,"r")
        #将json文件转化为字典格式
        testdata = json.load(f)
        #关闭json文件
        f.close()
        #获取字典内所有的value,转化为list数据类型
        testdata = list(testdata.values())
        #返回组装好的结果
        return testdata

    def read_yaml(self):
        #获取测试数据路径(yaml)
        yaml_path = os.path.dirname(os.path.dirname(__file__)) + r"/testData/data.yaml"
        #打开并读取yaml文件
        f = open(yaml_path,"r")
        #读取yaml文件并组装数据
        testData = yaml.load(f,Loader=yaml.FullLoader)
        #关闭yaml文件
        f.close()
        #返回组装后的结果
        return testData


if __name__ == "__main__":
    re = ReadData()
    print(re.read_excel())  #打印Excel格式的文件
    #print(re.read_json()) #打印json格式的文件
    #print(re.read_yaml())







